package com.example.managemyself.data.database;

import androidx.room.migration.Migration;
import androidx.sqlite.db.SupportSQLiteDatabase;

/**
 * 数据库迁移类，管理数据库版本升级
 */
public class DatabaseMigrations {
    
    /**
     * 从版本1迁移到版本2
     */
    public static final Migration MIGRATION_1_2 = new Migration(1, 2) {
        @Override
        public void migrate(SupportSQLiteDatabase database) {
            // 示例：添加新字段
            database.execSQL("ALTER TABLE tasks ADD COLUMN type TEXT");
        }
    };
    
    /**
     * 从版本2迁移到版本3
     */
    public static final Migration MIGRATION_2_3 = new Migration(2, 3) {
        @Override
        public void migrate(SupportSQLiteDatabase database) {
            // 示例：创建新表
            database.execSQL(
                "CREATE TABLE IF NOT EXISTS categories (" +
                "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
                "name TEXT NOT NULL, " +
                "color TEXT NOT NULL)");
        }
    };

    /**
     * 从版本3迁移到版本4
     */
    public static final Migration MIGRATION_3_4 = new Migration(3, 4) {
        @Override
        public void migrate(SupportSQLiteDatabase database) {
            // 在这里添加从版本3到版本4的迁移逻辑
            // 因为我们用 HealthData 替换了 HealthLog，这是一个破坏性更改
            // 并且我们设置了 .fallbackToDestructiveMigration()
            // 所以一个空的迁移在这里是可以接受的（仅限开发阶段）
            // 在生产环境中，你需要在这里编写代码来迁移用户数据
            database.execSQL("DROP TABLE IF EXISTS HealthLog");
            database.execSQL(
                "CREATE TABLE IF NOT EXISTS `health_data` (" +
                "`date` INTEGER NOT NULL, " +
                "`weight` REAL NOT NULL, " +
                "`height` REAL NOT NULL, " +
                "`sleepHours` REAL NOT NULL, " +
                "`mood` TEXT, " +
                "`energyLevel` INTEGER NOT NULL, " +
                "PRIMARY KEY(`date`))"
            );
        }
    };
} 